Point p {
  p.shape = RectangleTransform {
    strokeWidth : 0
    rotation : 0.262
    sizeX : 140.0
    sizeY : 8.0
  }

  p.text = TextTransform {
    scaleX : 1.0
    scaleY : 1.0
    string : "o"
  }

  LOCAL.layering = p.shape below p.text
  p.onCanvasFn = encourage polyOnCanvas(p.shape)
  p.labelFn = encourage nearPoint2(p.text, 0.0, 0.0, p.shape, 0.5, 0.0, 10.0)
  p.disjFn = encourage disjointPoly(p.text, p.shape)
}

Point p1; Point p2
where Chain(p1, p2) {
  LOCAL.connFn = encourage nearPoint2(p2.shape, -0.5, 0.0, p1.text, 0.0, 0.0, 10.0)
  LOCAL.disjFn1 = encourage disjointPoly(p2.shape, p1.text)
  LOCAL.alignFn = encourage alignAlong(p1.shape, p2.shape, 15.0)
}